package helper

import (
	"os"
	"io"
	"io/ioutil"
)

/*
golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断:
如果返回的错误为nil,说明文件或文件夹存在
如果返回的错误类型使用os.IsNotExist()判断为true,说明文件或文件夹不存在
如果返回的错误为其它类型,则不确定是否在存在
*/

func PathExists(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}


func WritetoFile(filePath string, content []byte) error {
	fl, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		return err
	}
	defer fl.Close()
	n, err := fl.Write(content)
	if err != nil {
		return err
	}
	if err == nil && n < len(content) { //ErrShortWrite表示写入的数据比提供的少，却没有显式的错误
		err = io.ErrShortWrite
	}
	return nil
}

func ReadFileData(filename string) ([]byte, error) {
	file, err := os.Open(filename)
	if err != nil {
		return []byte{}, err
	}
	defer file.Close()
	data, err := ioutil.ReadAll(file)
	if err != nil {
		return []byte{}, err
	}
	return data, nil
}

